home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / eiffel / smalleif.97 / se.t / SmallEiffel / bin_c / compile_to_c17.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-02  |  44.0 KB  |  1,791 lines

  1. /* ANSI C code generated by SmallEiffel. */
  2. /*
  3. -- SmallEiffel  -- Release (- 0.97)    --      FRANCE
  4. -- Copyright (C), 1994 - Dominique COLNET and Suzanne COLLIN 
  5. -- University Henri Poincare' - Nancy 1 - email colnet@loria.fr 
  6. -- CRIN (Centre de Recherche en Informatique de Nancy)
  7. -- FRANCE 
  8. */
  9. #include "compile_to_c.h"
  10. void rT194error(/*C*/T0 * a1,T0* a2){
  11. /*UT*/(T45*)oRBC27eh;
  12. rT45add_position(a1);
  13. rT45error((T45*)oRBC27eh,a2);
  14. }
  15. T0 * rT194add_comment(T194 *C,T0 * a1){
  16. T0 * R=NULL;
  17. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  18. R=(T0 *)C;
  19. }
  20. else {
  21. {T220 *n=((T220*)new(220));
  22. rT220make(n,(T0 *)C,a1);
  23. R=(T0 *)n;}}
  24. /*FI*/return R;
  25. }
  26. T0 * rT194arg1(T194 *C){
  27. T0 * R=NULL;
  28. R=rT170first((T170*)(C)->_arguments);
  29. return R;
  30. }
  31. T0 * rT194start_position(T194 *C){
  32. T0 * R=NULL;
  33. R=((T70*)(C)->_feature_name)->_start_position;
  34. return R;
  35. }
  36. int rT194use_current(T194 *C){
  37. int R=0;
  38. /*IF*/{/*AT*/R=rT170use_current((T170*)(C)->_arguments);
  39. }
  40. /*FI*//*IF*/if (R) {
  41. }
  42.  else if (XrT68is_current((C)->_target)) {
  43. R=XrT261use_current((C)->_run_feature);
  44. }
  45. else {
  46. R=XrT68use_current((C)->_target);
  47. }
  48. /*FI*/return R;
  49. }
  50. T0* rT194clone(T194 *C,T0* a1){
  51. T0* R=NULL;
  52. /*IF*/if (((int)a1)) {
  53. R=(T0 *)new(a1->id);
  54. AF_1
  55. XrT28copy(R,a1);
  56. AF_0
  57. }
  58. /*FI*/return R;
  59. }
  60. void rT194compile_to_c_old(T194 *C){
  61. XrT68compile_to_c_old((C)->_target);
  62. /*IF*/{/*AT*/rT170compile_to_c_old((T170*)(C)->_arguments);
  63. }
  64. /*FI*/}
  65. void rT194compile_to_c(T194 *C){
  66. T0* _n=NULL;
  67. T0 * _dyn_rf=NULL;
  68. T0 * _tt=NULL;
  69. T0* _r=NULL;
  70. _tt=XrT58run_type(XrT68result_type((C)->_target));
  71. _n=XrT67to_string(XrT261name((C)->_run_feature));
  72. /*IF*/if (rT7is_equal((T7*)(T0 *)ms1109,_n)) {
  73. rT40put_is_expanded_type((T40*)oRBC27cpp,_tt);
  74. }
  75.  else if (((XrT58is_expanded(_tt))||(XrT68is_current((C)->_target)))||(XrT68is_manifest_string((C)->_target))) {
  76. rT40push_direct((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  77. XrT261mapping_c((C)->_run_feature);
  78. rT40pop((T40*)oRBC27cpp);
  79. }
  80. else {
  81. _r=((T260*)XrT58run_class(_tt))->_running;
  82. /*IF*/if (!(_r)) {
  83. rT40push_void((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  84. XrT261mapping_c((C)->_run_feature);
  85. rT40pop((T40*)oRBC27cpp);
  86. }
  87.  else if ((rT263count((T263*)_r))==(1)) {
  88. _dyn_rf=rT194dynamic(rT263first((T263*)_r),(C)->_run_feature);
  89. rT40push_check((T40*)oRBC27cpp,_dyn_rf,(C)->_target,(C)->_arguments);
  90. XrT261mapping_c(_dyn_rf);
  91. rT40pop((T40*)oRBC27cpp);
  92. }
  93. else {
  94. rT40use_switch((T40*)oRBC27cpp,(C)->_run_feature,_r,(C)->_target,(C)->_arguments);
  95. }
  96. /*FI*/}
  97. /*FI*/}
  98. int rT194to_integer(T194 *C){
  99. int R=0;
  100. rT194error(rT194start_position(C),(T0 *)ms175);
  101. return R;
  102. }
  103. T0 * rT194dynamic(/*C*/T0 * a1,T0 * a2){
  104. T0 * R=NULL;
  105. T0 * _static=NULL;
  106. T0 * _sta_name=NULL;
  107. T0 * _dyn_name=NULL;
  108. _static=XrT261current_type(a2);
  109. _sta_name=XrT261name(a2);
  110. _dyn_name=rT50name_of((T50*)rT260base_class((T260*)a1),XrT58base_class(_static),_sta_name);
  111. R=rT260get_feature((T260*)a1,_dyn_name);
  112. return R;
  113. }
  114. T0 * rT194written_in(T194 *C){
  115. T0 * R=NULL;
  116. T0 * _sp=NULL;
  117. _sp=rT194start_position(C);
  118. /*IF*/if (((int)_sp)) {
  119. R=((T46*)_sp)->_base_class_name;
  120. }
  121. /*FI*/return R;
  122. }
  123. void rT194copy(T194 *C,T0 * a1){
  124. /*IF*//*AF*//*AE*/
  125. memcpy(C,a1,s[C->id]);
  126. /*FI*/}
  127. int rT194is_a(T194 *C,T0 * a1){
  128. int R=0;
  129. R=XrT58is_a(XrT58run_type((C)->_result_type),XrT58run_type(XrT68result_type(a1)));
  130. /*IF*/if (!(R)) {
  131. /*UT*/(T45*)oRBC27eh;
  132. rT45add_position(rT194start_position(C));
  133. rT194error(XrT68start_position(a1),(T0 *)ms1261);
  134. }
  135. /*FI*/return R;
  136. }
  137. void rT194make_call_1(T194 *C,T0 * a1,T0 * a2,T0 * a3){
  138. C->_target=a1;
  139. C->_feature_name=a2;
  140. C->_arguments=a3;
  141. }
  142. void rT194make(T194 *C,T0 * a1,T0 * a2,T0 * a3){
  143. T0 * _eal=NULL;
  144. /*IF*/if ((!(a1))||(!(a3))) {
  145. /*UT*/(T45*)oRBC27eh;
  146. rT45add_position(a2);
  147. rT194fatal_error((T0 *)ms305);
  148. }
  149. /*FI*/{T70 *n=((T70*)new(70));
  150. rT70make(n,(T0 *)ms322,a2);
  151. C->_feature_name=(T0 *)n;}
  152. {T170 *n=((T170*)new(170));
  153. /*(IRF3*/((n)->_list)=(ma(81,0,1,a3));
  154. /*)*/_eal=(T0 *)n;}
  155. rT194make_call_1(C,a1,(C)->_feature_name,_eal);
  156. }
  157. int rT193is_static(T193 *C){
  158. int R=0;
  159. /*IF*/if (XrT58is_integer(XrT68result_type((C)->_target))) {
  160. /*IF*/if ((XrT68is_static((C)->_target))&&(XrT68is_static(rT193arg1(C)))) {
  161. R=1;
  162. /*IF*/if ((XrT68static_value((C)->_target))<=(XrT68static_value(rT193arg1(C)))) {
  163. C->_static_value_mem=1;
  164. }
  165. else {
  166. C->_static_value_mem=0;
  167. }
  168. /*FI*/}
  169. /*FI*/}
  170. /*FI*/return R;
  171. }
  172. int rT193static_value(T193 *C){
  173. int R=0;
  174. R=(C)->_static_value_mem;
  175. return R;
  176. }
  177. void rT193fatal_error(/*C*/T0* a1){
  178. rT45fatal_error((T45*)oRBC27eh,a1);
  179. }
  180. void rT193to_runnable_0(T193 *C,T0 * a1){
  181. T0 * _rc=NULL;
  182. T0 * _t=NULL;
  183. C->_current_type=a1;
  184. _t=XrT68to_runnable((C)->_target,a1);
  185. /*IF*/if (!(_t)) {
  186. rT193error(XrT68start_position((C)->_target),(T0 *)ms1119);
  187. }
  188. else {
  189. C->_target=_t;
  190. _rc=XrT58run_class(XrT68result_type((C)->_target));
  191. C->_run_feature=rT260get_rf((T260*)_rc,(C)->_target,(C)->_feature_name);
  192. C->_result_type=XrT261result_type((C)->_run_feature);
  193. /*IF*/if (!((C)->_result_type)) {
  194. /*UT*/(T45*)oRBC27eh;
  195. rT45add_position(XrT261start_position((C)->_run_feature));
  196. rT193error(((T70*)(C)->_feature_name)->_start_position,(T0 *)ms1131);
  197. }
  198. /*FI*/}
  199. /*FI*/}
  200. T0 * rT193to_runnable(T193 *C,T0 * a1){
  201. T0 * R=NULL;
  202. T0 * _a=NULL;
  203. /*IF*/if (!((C)->_current_type)) {
  204. rT193to_runnable_0(C,a1);
  205. _a=rT170to_runnable((T170*)(C)->_arguments,a1);
  206. /*IF*/if (!(_a)) {
  207. rT193error(XrT68start_position(rT193arg1(C)),(T0 *)ms1136);
  208. }
  209. else {
  210. C->_arguments=_a;
  211. }
  212. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  213. rT170match_with((T170*)(C)->_arguments,(C)->_run_feature);
  214. }
  215. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0))&&(XrT58is_like_argument((C)->_result_type))) {
  216. C->_result_type=XrT58run_type(XrT68result_type(rT193arg1(C)));
  217. }
  218. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  219. R=(T0 *)C;
  220. }
  221. /*FI*/}
  222. else {
  223. R=rT193clone(C,(T0 *)C);
  224. /*(IRF3*/(((T193*)R)->_current_type)=(NULL);
  225. /*)*/R=rT193to_runnable((T193*)R,a1);
  226. }
  227. /*FI*/return R;
  228. }
  229. void rT193error(/*C*/T0 * a1,T0* a2){
  230. /*UT*/(T45*)oRBC27eh;
  231. rT45add_position(a1);
  232. rT45error((T45*)oRBC27eh,a2);
  233. }
  234. T0 * rT193add_comment(T193 *C,T0 * a1){
  235. T0 * R=NULL;
  236. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  237. R=(T0 *)C;
  238. }
  239. else {
  240. {T220 *n=((T220*)new(220));
  241. rT220make(n,(T0 *)C,a1);
  242. R=(T0 *)n;}}
  243. /*FI*/return R;
  244. }
  245. T0 * rT193arg1(T193 *C){
  246. T0 * R=NULL;
  247. R=rT170first((T170*)(C)->_arguments);
  248. return R;
  249. }
  250. T0 * rT193start_position(T193 *C){
  251. T0 * R=NULL;
  252. R=((T70*)(C)->_feature_name)->_start_position;
  253. return R;
  254. }
  255. int rT193use_current(T193 *C){
  256. int R=0;
  257. /*IF*/{/*AT*/R=rT170use_current((T170*)(C)->_arguments);
  258. }
  259. /*FI*//*IF*/if (R) {
  260. }
  261.  else if (XrT68is_current((C)->_target)) {
  262. R=XrT261use_current((C)->_run_feature);
  263. }
  264. else {
  265. R=XrT68use_current((C)->_target);
  266. }
  267. /*FI*/return R;
  268. }
  269. T0* rT193clone(T193 *C,T0* a1){
  270. T0* R=NULL;
  271. /*IF*/if (((int)a1)) {
  272. R=(T0 *)new(a1->id);
  273. AF_1
  274. XrT28copy(R,a1);
  275. AF_0
  276. }
  277. /*FI*/return R;
  278. }
  279. void rT193compile_to_c_old(T193 *C){
  280. XrT68compile_to_c_old((C)->_target);
  281. /*IF*/{/*AT*/rT170compile_to_c_old((T170*)(C)->_arguments);
  282. }
  283. /*FI*/}
  284. void rT193compile_to_c(T193 *C){
  285. T0* _n=NULL;
  286. T0 * _dyn_rf=NULL;
  287. T0 * _tt=NULL;
  288. T0* _r=NULL;
  289. _tt=XrT58run_type(XrT68result_type((C)->_target));
  290. _n=XrT67to_string(XrT261name((C)->_run_feature));
  291. /*IF*/if (rT7is_equal((T7*)(T0 *)ms1109,_n)) {
  292. rT40put_is_expanded_type((T40*)oRBC27cpp,_tt);
  293. }
  294.  else if (((XrT58is_expanded(_tt))||(XrT68is_current((C)->_target)))||(XrT68is_manifest_string((C)->_target))) {
  295. rT40push_direct((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  296. XrT261mapping_c((C)->_run_feature);
  297. rT40pop((T40*)oRBC27cpp);
  298. }
  299. else {
  300. _r=((T260*)XrT58run_class(_tt))->_running;
  301. /*IF*/if (!(_r)) {
  302. rT40push_void((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  303. XrT261mapping_c((C)->_run_feature);
  304. rT40pop((T40*)oRBC27cpp);
  305. }
  306.  else if ((rT263count((T263*)_r))==(1)) {
  307. _dyn_rf=rT193dynamic(rT263first((T263*)_r),(C)->_run_feature);
  308. rT40push_check((T40*)oRBC27cpp,_dyn_rf,(C)->_target,(C)->_arguments);
  309. XrT261mapping_c(_dyn_rf);
  310. rT40pop((T40*)oRBC27cpp);
  311. }
  312. else {
  313. rT40use_switch((T40*)oRBC27cpp,(C)->_run_feature,_r,(C)->_target,(C)->_arguments);
  314. }
  315. /*FI*/}
  316. /*FI*/}
  317. int rT193to_integer(T193 *C){
  318. int R=0;
  319. rT193error(rT193start_position(C),(T0 *)ms175);
  320. return R;
  321. }
  322. T0 * rT193dynamic(/*C*/T0 * a1,T0 * a2){
  323. T0 * R=NULL;
  324. T0 * _static=NULL;
  325. T0 * _sta_name=NULL;
  326. T0 * _dyn_name=NULL;
  327. _static=XrT261current_type(a2);
  328. _sta_name=XrT261name(a2);
  329. _dyn_name=rT50name_of((T50*)rT260base_class((T260*)a1),XrT58base_class(_static),_sta_name);
  330. R=rT260get_feature((T260*)a1,_dyn_name);
  331. return R;
  332. }
  333. T0 * rT193written_in(T193 *C){
  334. T0 * R=NULL;
  335. T0 * _sp=NULL;
  336. _sp=rT193start_position(C);
  337. /*IF*/if (((int)_sp)) {
  338. R=((T46*)_sp)->_base_class_name;
  339. }
  340. /*FI*/return R;
  341. }
  342. void rT193copy(T193 *C,T0 * a1){
  343. /*IF*//*AF*//*AE*/
  344. memcpy(C,a1,s[C->id]);
  345. /*FI*/}
  346. int rT193is_a(T193 *C,T0 * a1){
  347. int R=0;
  348. R=XrT58is_a(XrT58run_type((C)->_result_type),XrT58run_type(XrT68result_type(a1)));
  349. /*IF*/if (!(R)) {
  350. /*UT*/(T45*)oRBC27eh;
  351. rT45add_position(rT193start_position(C));
  352. rT193error(XrT68start_position(a1),(T0 *)ms1261);
  353. }
  354. /*FI*/return R;
  355. }
  356. void rT193make_call_1(T193 *C,T0 * a1,T0 * a2,T0 * a3){
  357. C->_target=a1;
  358. C->_feature_name=a2;
  359. C->_arguments=a3;
  360. }
  361. void rT193make(T193 *C,T0 * a1,T0 * a2,T0 * a3){
  362. T0 * _eal=NULL;
  363. /*IF*/if ((!(a1))||(!(a3))) {
  364. /*UT*/(T45*)oRBC27eh;
  365. rT45add_position(a2);
  366. rT193fatal_error((T0 *)ms305);
  367. }
  368. /*FI*/{T70 *n=((T70*)new(70));
  369. rT70make(n,(T0 *)ms318,a2);
  370. C->_feature_name=(T0 *)n;}
  371. {T170 *n=((T170*)new(170));
  372. /*(IRF3*/((n)->_list)=(ma(81,0,1,a3));
  373. /*)*/_eal=(T0 *)n;}
  374. rT193make_call_1(C,a1,(C)->_feature_name,_eal);
  375. }
  376. T0 * rT192type_boolean(/*C*/void){
  377. T0 * R=NULL;
  378. if (ofBC27type_boolean==0){
  379. ofBC27type_boolean=1;
  380. {T107 *n=((T107*)new(107));
  381. rT107make(n,NULL);
  382. R=(T0 *)n;}
  383. oRBC27type_boolean=R;}
  384. return oRBC27type_boolean;}
  385. int rT192is_static_exp(T192 *C,T0 * a1){
  386. int R=0;
  387. /*IF*/if ((XrT58is_expanded(XrT68result_type(a1)))||(XrT68is_current(a1))) {
  388. R=1;
  389. C->_static_value_mem=1;
  390. }
  391. /*FI*/return R;
  392. }
  393. int rT192is_static(T192 *C){
  394. int R=0;
  395. /*IF*/if (XrT68is_void((C)->_target)) {
  396. R=rT192is_static_exp(C,rT192arg1(C));
  397. }
  398.  else if (XrT68is_void(rT192arg1(C))) {
  399. R=rT192is_static_exp(C,(C)->_target);
  400. }
  401.  else if ((XrT68is_static((C)->_target))&&(XrT68is_static(rT192arg1(C)))) {
  402. R=1;
  403. /*IF*/if ((XrT68static_value((C)->_target))!=(XrT68static_value(rT192arg1(C)))) {
  404. C->_static_value_mem=1;
  405. }
  406. /*FI*/}
  407. /*FI*/return R;
  408. }
  409. int rT192static_value(T192 *C){
  410. int R=0;
  411. R=(C)->_static_value_mem;
  412. return R;
  413. }
  414. void rT192fatal_error(/*C*/T0* a1){
  415. rT45fatal_error((T45*)oRBC27eh,a1);
  416. }
  417. void rT192to_runnable_0(T192 *C,T0 * a1){
  418. T0 * _rc=NULL;
  419. T0 * _t=NULL;
  420. C->_current_type=a1;
  421. _t=XrT68to_runnable((C)->_target,a1);
  422. /*IF*/if (!(_t)) {
  423. rT192error(XrT68start_position((C)->_target),(T0 *)ms1119);
  424. }
  425. else {
  426. C->_target=_t;
  427. _rc=XrT58run_class(XrT68result_type((C)->_target));
  428. C->_run_feature=rT260get_rf((T260*)_rc,(C)->_target,(C)->_feature_name);
  429. C->_result_type=XrT261result_type((C)->_run_feature);
  430. /*IF*/if (!((C)->_result_type)) {
  431. /*UT*/(T45*)oRBC27eh;
  432. rT45add_position(XrT261start_position((C)->_run_feature));
  433. rT192error(((T70*)(C)->_feature_name)->_start_position,(T0 *)ms1131);
  434. }
  435. /*FI*/}
  436. /*FI*/}
  437. void rT192to_runnable_equal_not_equal(T192 *C,T0 * a1){
  438. T0 * _at=NULL;
  439. T0 * _tt=NULL;
  440. T0 * _a=NULL;
  441. T0 * _t=NULL;
  442. C->_current_type=a1;
  443. _t=XrT68to_runnable((C)->_target,a1);
  444. /*IF*/if (!(_t)) {
  445. rT192error(XrT68start_position((C)->_target),(T0 *)ms1147);
  446. }
  447. else {
  448. C->_target=_t;
  449. }
  450. /*FI*/_a=rT170to_runnable((T170*)(C)->_arguments,a1);
  451. /*IF*/if (((int)_a)) {
  452. C->_arguments=_a;
  453. }
  454. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  455. _tt=XrT58run_type(XrT68result_type((C)->_target));
  456. _at=XrT58run_type(XrT68result_type(rT192arg1(C)));
  457. /*IF*/if (XrT58is_none(_tt)) {
  458. /*IF*/if (XrT58is_expanded(_at)) {
  459. XrT58used_as_reference(_at);
  460. }
  461. /*FI*/}
  462.  else if (XrT58is_none(_at)) {
  463. /*IF*/if (XrT58is_expanded(_tt)) {
  464. XrT58used_as_reference(_tt);
  465. }
  466. /*FI*/}
  467.  else if (XrT58is_reference(_tt)) {
  468. /*IF*/if (XrT58is_reference(_at)) {
  469. /*IF*/if (XrT58is_a(_tt,_at)) {
  470. }
  471. else {
  472. /*(IRF3*//*UT*/(T45*)oRBC27eh;
  473. /*(IRF3*/(((T7*)oRBC45explanation)->_count)=(0);
  474. /*)*/rT47clear((T47*)rT45positions());
  475. /*)*//*IF*/if (XrT58is_a(_at,_tt)) {
  476. }
  477. else {
  478. rT192error_comparison(C,(T0 *)ms1150);
  479. }
  480. /*FI*/}
  481. /*FI*/}
  482.  else if (!(XrT58is_a(_at,_tt))) {
  483. rT192error_comparison(C,(T0 *)ms1151);
  484. }
  485. else {
  486. XrT58used_as_reference(_at);
  487. }
  488. /*FI*/}
  489. else {
  490. /*IF*/if (XrT58is_expanded(_at)) {
  491. /*IF*/if (XrT58fast_mapping_c(_at)) {
  492. /*IF*/if (XrT58is_a(_tt,_at)) {
  493. }
  494. else {
  495. /*(IRF3*//*UT*/(T45*)oRBC27eh;
  496. /*(IRF3*/(((T7*)oRBC45explanation)->_count)=(0);
  497. /*)*/rT47clear((T47*)rT45positions());
  498. /*)*//*IF*/if (XrT58is_a(_at,_tt)) {
  499. }
  500. else {
  501. rT192error_comparison(C,(T0 *)ms1152);
  502. }
  503. /*FI*/}
  504. /*FI*/}
  505.  else if (!(XrT58is_a(_at,_tt))) {
  506. rT192error_comparison(C,(T0 *)ms1153);
  507. }
  508. /*FI*/}
  509.  else if (!(XrT58is_a(_tt,_at))) {
  510. rT192error_comparison(C,(T0 *)ms1154);
  511. }
  512. else {
  513. XrT58used_as_reference(_tt);
  514. }
  515. /*FI*/}
  516. /*FI*/}
  517. /*FI*/}
  518. T0 * rT192to_runnable(T192 *C,T0 * a1){
  519. T0 * R=NULL;
  520. /*IF*/if (!((C)->_current_type)) {
  521. rT192to_runnable_equal_not_equal(C,a1);
  522. C->_result_type=rT192type_boolean();
  523. /*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  524. R=(T0 *)C;
  525. }
  526. /*FI*/}
  527. else {
  528. {T192 *n=((T192*)new(192));
  529. rT192make(n,(C)->_target,((T70*)(C)->_feature_name)->_start_position,rT192arg1(C));
  530. R=(T0 *)n;}
  531. R=rT192to_runnable((T192*)R,a1);
  532. }
  533. /*FI*/return R;
  534. }
  535. void rT192error_comparison(T192 *C,T0* a1){
  536. /*UT*/(T45*)oRBC27eh;
  537. rT45add_position(((T70*)(C)->_feature_name)->_start_position);
  538. /*UT*/(T45*)oRBC27eh;
  539. rT45append((T0 *)ms1148);
  540. /*UT*/(T45*)oRBC27eh;
  541. rT45append(a1);
  542. /*UT*/(T45*)oRBC27eh;
  543. rT45append((T0 *)ms1149);
  544. /*UT*/(T45*)oRBC27eh;
  545. rT45add_type((C)->_current_type,(T0 *)ms38);
  546. rT45print_as_error((T45*)oRBC27eh);
  547. }
  548. void rT192error(/*C*/T0 * a1,T0* a2){
  549. /*UT*/(T45*)oRBC27eh;
  550. rT45add_position(a1);
  551. rT45error((T45*)oRBC27eh,a2);
  552. }
  553. T0 * rT192add_comment(T192 *C,T0 * a1){
  554. T0 * R=NULL;
  555. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  556. R=(T0 *)C;
  557. }
  558. else {
  559. {T220 *n=((T220*)new(220));
  560. rT220make(n,(T0 *)C,a1);
  561. R=(T0 *)n;}}
  562. /*FI*/return R;
  563. }
  564. T0 * rT192arg1(T192 *C){
  565. T0 * R=NULL;
  566. R=rT170first((T170*)(C)->_arguments);
  567. return R;
  568. }
  569. T0 * rT192start_position(T192 *C){
  570. T0 * R=NULL;
  571. R=((T70*)(C)->_feature_name)->_start_position;
  572. return R;
  573. }
  574. int rT192use_current(T192 *C){
  575. int R=0;
  576. R=(XrT68use_current((C)->_target))||(XrT68use_current(rT192arg1(C)));
  577. return R;
  578. }
  579. T0* rT192clone(T192 *C,T0* a1){
  580. T0* R=NULL;
  581. /*IF*/if (((int)a1)) {
  582. R=(T0 *)new(a1->id);
  583. AF_1
  584. XrT28copy(R,a1);
  585. AF_0
  586. }
  587. /*FI*/return R;
  588. }
  589. void rT192compile_to_c_old(T192 *C){
  590. XrT68compile_to_c_old((C)->_target);
  591. /*IF*/{/*AT*/rT170compile_to_c_old((T170*)(C)->_arguments);
  592. }
  593. /*FI*/}
  594. void rT192compile_to_c(T192 *C){
  595. T0 * _at=NULL;
  596. T0 * _tt=NULL;
  597. _tt=XrT58run_type(XrT68result_type((C)->_target));
  598. _at=XrT58run_type(XrT68result_type(rT192arg1(C)));
  599. /*IF*/if (XrT58is_expanded(_tt)) {
  600. /*IF*/if (XrT58is_expanded(_at)) {
  601. /*IF*/if ((XrT58fast_mapping_c(_tt))||(XrT58is_pointer(_tt))) {
  602. rT40put_character((T40*)oRBC27cpp,'\50');
  603. XrT68compile_to_c((C)->_target);
  604. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1204);
  605. XrT68compile_to_c(rT192arg1(C));
  606. rT40put_character((T40*)oRBC27cpp,'\51');
  607. }
  608. else {
  609. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1205);
  610. XrT68compile_to_c((C)->_target);
  611. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1206);
  612. XrT68compile_to_c(rT192arg1(C));
  613. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1207);
  614. rT40put_integer((T40*)oRBC27cpp,XrT58id(_tt));
  615. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1208);
  616. }
  617. /*FI*/}
  618. else {
  619. rT192c2c_exp_ref((C)->_target,_tt,rT192arg1(C),_at);
  620. }
  621. /*FI*/}
  622.  else if (XrT58is_expanded(_at)) {
  623. rT192c2c_exp_ref(rT192arg1(C),_at,(C)->_target,_tt);
  624. }
  625. else {
  626. /*IF*/if (XrT68is_void(rT192arg1(C))) {
  627. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1214);
  628. XrT68compile_to_c((C)->_target);
  629. rT40put_character((T40*)oRBC27cpp,'\51');
  630. }
  631.  else if (XrT68is_void((C)->_target)) {
  632. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1215);
  633. XrT68compile_to_c(rT192arg1(C));
  634. rT40put_character((T40*)oRBC27cpp,'\51');
  635. }
  636. else {
  637. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1216);
  638. XrT68compile_to_c((C)->_target);
  639. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1217);
  640. XrT68compile_to_c(rT192arg1(C));
  641. rT40put_character((T40*)oRBC27cpp,'\51');
  642. }
  643. /*FI*/}
  644. /*FI*/}
  645. int rT192to_integer(T192 *C){
  646. int R=0;
  647. rT192error(rT192start_position(C),(T0 *)ms175);
  648. return R;
  649. }
  650. T0 * rT192dynamic(/*C*/T0 * a1,T0 * a2){
  651. T0 * R=NULL;
  652. T0 * _static=NULL;
  653. T0 * _sta_name=NULL;
  654. T0 * _dyn_name=NULL;
  655. _static=XrT261current_type(a2);
  656. _sta_name=XrT261name(a2);
  657. _dyn_name=rT50name_of((T50*)rT260base_class((T260*)a1),XrT58base_class(_static),_sta_name);
  658. R=rT260get_feature((T260*)a1,_dyn_name);
  659. return R;
  660. }
  661. T0 * rT192written_in(T192 *C){
  662. T0 * R=NULL;
  663. T0 * _sp=NULL;
  664. _sp=rT192start_position(C);
  665. /*IF*/if (((int)_sp)) {
  666. R=((T46*)_sp)->_base_class_name;
  667. }
  668. /*FI*/return R;
  669. }
  670. void rT192copy(T192 *C,T0 * a1){
  671. /*IF*//*AF*//*AE*/
  672. memcpy(C,a1,s[C->id]);
  673. /*FI*/}
  674. int rT192is_a(T192 *C,T0 * a1){
  675. int R=0;
  676. R=XrT58is_a(XrT58run_type((C)->_result_type),XrT58run_type(XrT68result_type(a1)));
  677. /*IF*/if (!(R)) {
  678. /*UT*/(T45*)oRBC27eh;
  679. rT45add_position(rT192start_position(C));
  680. rT192error(XrT68start_position(a1),(T0 *)ms1261);
  681. }
  682. /*FI*/return R;
  683. }
  684. void rT192c2c_exp_ref(/*C*/T0 * a1,T0 * a2,T0 * a3,T0 * a4){
  685. /*IF*/if (XrT68is_void(a3)) {
  686. /*IF*/if (XrT58is_pointer(a2)) {
  687. XrT68compile_to_c(a1);
  688. }
  689. else {
  690. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1209);
  691. XrT68compile_to_c(a3);
  692. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1210);
  693. }
  694. /*FI*/}
  695. /*FI*/rT40put_string((T40*)oRBC27cpp,(T0 *)ms1211);
  696. XrT68compile_to_c(a1);
  697. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1212);
  698. XrT68compile_to_c(a3);
  699. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1213);
  700. }
  701. void rT192make_call_1(T192 *C,T0 * a1,T0 * a2,T0 * a3){
  702. C->_target=a1;
  703. C->_feature_name=a2;
  704. C->_arguments=a3;
  705. }
  706. void rT192make(T192 *C,T0 * a1,T0 * a2,T0 * a3){
  707. T0 * _eal=NULL;
  708. /*IF*/if ((!(a1))||(!(a3))) {
  709. /*UT*/(T45*)oRBC27eh;
  710. rT45add_position(a2);
  711. rT192fatal_error((T0 *)ms305);
  712. }
  713. /*FI*/{T70 *n=((T70*)new(70));
  714. rT70make(n,(T0 *)ms316,a2);
  715. C->_feature_name=(T0 *)n;}
  716. {T170 *n=((T170*)new(170));
  717. /*(IRF3*/((n)->_list)=(ma(81,0,1,a3));
  718. /*)*/_eal=(T0 *)n;}
  719. rT192make_call_1(C,a1,(C)->_feature_name,_eal);
  720. }
  721. T0 * rT191type_boolean(/*C*/void){
  722. T0 * R=NULL;
  723. if (ofBC27type_boolean==0){
  724. ofBC27type_boolean=1;
  725. {T107 *n=((T107*)new(107));
  726. rT107make(n,NULL);
  727. R=(T0 *)n;}
  728. oRBC27type_boolean=R;}
  729. return oRBC27type_boolean;}
  730. int rT191is_static_exp(/*C*/T0 * a1){
  731. int R=0;
  732. R=(XrT58is_expanded(XrT68result_type(a1)))||(XrT68is_current(a1));
  733. return R;
  734. }
  735. int rT191is_static(T191 *C){
  736. int R=0;
  737. /*IF*/if (XrT68is_void((C)->_target)) {
  738. R=rT191is_static_exp(rT191arg1(C));
  739. }
  740.  else if (XrT68is_void(rT191arg1(C))) {
  741. R=rT191is_static_exp((C)->_target);
  742. }
  743.  else if ((XrT68is_static((C)->_target))&&(XrT68is_static(rT191arg1(C)))) {
  744. R=1;
  745. /*IF*/if ((XrT68static_value((C)->_target))==(XrT68static_value(rT191arg1(C)))) {
  746. C->_static_value_mem=1;
  747. }
  748. /*FI*/}
  749. /*FI*/return R;
  750. }
  751. int rT191static_value(T191 *C){
  752. int R=0;
  753. R=(C)->_static_value_mem;
  754. return R;
  755. }
  756. void rT191fatal_error(/*C*/T0* a1){
  757. rT45fatal_error((T45*)oRBC27eh,a1);
  758. }
  759. void rT191to_runnable_0(T191 *C,T0 * a1){
  760. T0 * _rc=NULL;
  761. T0 * _t=NULL;
  762. C->_current_type=a1;
  763. _t=XrT68to_runnable((C)->_target,a1);
  764. /*IF*/if (!(_t)) {
  765. rT191error(XrT68start_position((C)->_target),(T0 *)ms1119);
  766. }
  767. else {
  768. C->_target=_t;
  769. _rc=XrT58run_class(XrT68result_type((C)->_target));
  770. C->_run_feature=rT260get_rf((T260*)_rc,(C)->_target,(C)->_feature_name);
  771. C->_result_type=XrT261result_type((C)->_run_feature);
  772. /*IF*/if (!((C)->_result_type)) {
  773. /*UT*/(T45*)oRBC27eh;
  774. rT45add_position(XrT261start_position((C)->_run_feature));
  775. rT191error(((T70*)(C)->_feature_name)->_start_position,(T0 *)ms1131);
  776. }
  777. /*FI*/}
  778. /*FI*/}
  779. void rT191to_runnable_equal_not_equal(T191 *C,T0 * a1){
  780. T0 * _at=NULL;
  781. T0 * _tt=NULL;
  782. T0 * _a=NULL;
  783. T0 * _t=NULL;
  784. C->_current_type=a1;
  785. _t=XrT68to_runnable((C)->_target,a1);
  786. /*IF*/if (!(_t)) {
  787. rT191error(XrT68start_position((C)->_target),(T0 *)ms1147);
  788. }
  789. else {
  790. C->_target=_t;
  791. }
  792. /*FI*/_a=rT170to_runnable((T170*)(C)->_arguments,a1);
  793. /*IF*/if (((int)_a)) {
  794. C->_arguments=_a;
  795. }
  796. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  797. _tt=XrT58run_type(XrT68result_type((C)->_target));
  798. _at=XrT58run_type(XrT68result_type(rT191arg1(C)));
  799. /*IF*/if (XrT58is_none(_tt)) {
  800. /*IF*/if (XrT58is_expanded(_at)) {
  801. XrT58used_as_reference(_at);
  802. }
  803. /*FI*/}
  804.  else if (XrT58is_none(_at)) {
  805. /*IF*/if (XrT58is_expanded(_tt)) {
  806. XrT58used_as_reference(_tt);
  807. }
  808. /*FI*/}
  809.  else if (XrT58is_reference(_tt)) {
  810. /*IF*/if (XrT58is_reference(_at)) {
  811. /*IF*/if (XrT58is_a(_tt,_at)) {
  812. }
  813. else {
  814. /*(IRF3*//*UT*/(T45*)oRBC27eh;
  815. /*(IRF3*/(((T7*)oRBC45explanation)->_count)=(0);
  816. /*)*/rT47clear((T47*)rT45positions());
  817. /*)*//*IF*/if (XrT58is_a(_at,_tt)) {
  818. }
  819. else {
  820. rT191error_comparison(C,(T0 *)ms1150);
  821. }
  822. /*FI*/}
  823. /*FI*/}
  824.  else if (!(XrT58is_a(_at,_tt))) {
  825. rT191error_comparison(C,(T0 *)ms1151);
  826. }
  827. else {
  828. XrT58used_as_reference(_at);
  829. }
  830. /*FI*/}
  831. else {
  832. /*IF*/if (XrT58is_expanded(_at)) {
  833. /*IF*/if (XrT58fast_mapping_c(_at)) {
  834. /*IF*/if (XrT58is_a(_tt,_at)) {
  835. }
  836. else {
  837. /*(IRF3*//*UT*/(T45*)oRBC27eh;
  838. /*(IRF3*/(((T7*)oRBC45explanation)->_count)=(0);
  839. /*)*/rT47clear((T47*)rT45positions());
  840. /*)*//*IF*/if (XrT58is_a(_at,_tt)) {
  841. }
  842. else {
  843. rT191error_comparison(C,(T0 *)ms1152);
  844. }
  845. /*FI*/}
  846. /*FI*/}
  847.  else if (!(XrT58is_a(_at,_tt))) {
  848. rT191error_comparison(C,(T0 *)ms1153);
  849. }
  850. /*FI*/}
  851.  else if (!(XrT58is_a(_tt,_at))) {
  852. rT191error_comparison(C,(T0 *)ms1154);
  853. }
  854. else {
  855. XrT58used_as_reference(_tt);
  856. }
  857. /*FI*/}
  858. /*FI*/}
  859. /*FI*/}
  860. T0 * rT191to_runnable(T191 *C,T0 * a1){
  861. T0 * R=NULL;
  862. /*IF*/if (!((C)->_current_type)) {
  863. rT191to_runnable_equal_not_equal(C,a1);
  864. C->_result_type=rT191type_boolean();
  865. /*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  866. R=(T0 *)C;
  867. }
  868. /*FI*/}
  869. else {
  870. {T191 *n=((T191*)new(191));
  871. rT191make(n,(C)->_target,((T70*)(C)->_feature_name)->_start_position,rT191arg1(C));
  872. R=(T0 *)n;}
  873. R=rT191to_runnable((T191*)R,a1);
  874. }
  875. /*FI*/return R;
  876. }
  877. void rT191error_comparison(T191 *C,T0* a1){
  878. /*UT*/(T45*)oRBC27eh;
  879. rT45add_position(((T70*)(C)->_feature_name)->_start_position);
  880. /*UT*/(T45*)oRBC27eh;
  881. rT45append((T0 *)ms1148);
  882. /*UT*/(T45*)oRBC27eh;
  883. rT45append(a1);
  884. /*UT*/(T45*)oRBC27eh;
  885. rT45append((T0 *)ms1149);
  886. /*UT*/(T45*)oRBC27eh;
  887. rT45add_type((C)->_current_type,(T0 *)ms38);
  888. rT45print_as_error((T45*)oRBC27eh);
  889. }
  890. void rT191error(/*C*/T0 * a1,T0* a2){
  891. /*UT*/(T45*)oRBC27eh;
  892. rT45add_position(a1);
  893. rT45error((T45*)oRBC27eh,a2);
  894. }
  895. T0 * rT191add_comment(T191 *C,T0 * a1){
  896. T0 * R=NULL;
  897. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  898. R=(T0 *)C;
  899. }
  900. else {
  901. {T220 *n=((T220*)new(220));
  902. rT220make(n,(T0 *)C,a1);
  903. R=(T0 *)n;}}
  904. /*FI*/return R;
  905. }
  906. T0 * rT191arg1(T191 *C){
  907. T0 * R=NULL;
  908. R=rT170first((T170*)(C)->_arguments);
  909. return R;
  910. }
  911. T0 * rT191start_position(T191 *C){
  912. T0 * R=NULL;
  913. R=((T70*)(C)->_feature_name)->_start_position;
  914. return R;
  915. }
  916. int rT191use_current(T191 *C){
  917. int R=0;
  918. R=(XrT68use_current((C)->_target))||(XrT68use_current(rT191arg1(C)));
  919. return R;
  920. }
  921. T0* rT191clone(T191 *C,T0* a1){
  922. T0* R=NULL;
  923. /*IF*/if (((int)a1)) {
  924. R=(T0 *)new(a1->id);
  925. AF_1
  926. XrT28copy(R,a1);
  927. AF_0
  928. }
  929. /*FI*/return R;
  930. }
  931. void rT191compile_to_c_old(T191 *C){
  932. XrT68compile_to_c_old((C)->_target);
  933. /*IF*/{/*AT*/rT170compile_to_c_old((T170*)(C)->_arguments);
  934. }
  935. /*FI*/}
  936. void rT191compile_to_c(T191 *C){
  937. T0 * _at=NULL;
  938. T0 * _tt=NULL;
  939. _tt=XrT58run_type(XrT68result_type((C)->_target));
  940. _at=XrT58run_type(XrT68result_type(rT191arg1(C)));
  941. /*IF*/if (XrT58is_expanded(_tt)) {
  942. /*IF*/if (XrT58is_expanded(_at)) {
  943. /*IF*/if ((XrT58fast_mapping_c(_tt))||(XrT58is_pointer(_tt))) {
  944. rT40put_character((T40*)oRBC27cpp,'\50');
  945. XrT68compile_to_c((C)->_target);
  946. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1190);
  947. XrT68compile_to_c(rT191arg1(C));
  948. rT40put_character((T40*)oRBC27cpp,'\51');
  949. }
  950. else {
  951. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1191);
  952. XrT68compile_to_c((C)->_target);
  953. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1192);
  954. XrT68compile_to_c(rT191arg1(C));
  955. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1193);
  956. rT40put_integer((T40*)oRBC27cpp,XrT58id(_tt));
  957. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1194);
  958. }
  959. /*FI*/}
  960. else {
  961. rT191c2c_exp_ref((C)->_target,_tt,rT191arg1(C),_at);
  962. }
  963. /*FI*/}
  964.  else if (XrT58is_expanded(_at)) {
  965. rT191c2c_exp_ref(rT191arg1(C),_at,(C)->_target,_tt);
  966. }
  967. else {
  968. /*IF*/if (XrT68is_void(rT191arg1(C))) {
  969. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1200);
  970. XrT68compile_to_c((C)->_target);
  971. rT40put_character((T40*)oRBC27cpp,'\51');
  972. }
  973.  else if (XrT68is_void((C)->_target)) {
  974. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1201);
  975. XrT68compile_to_c(rT191arg1(C));
  976. rT40put_character((T40*)oRBC27cpp,'\51');
  977. }
  978. else {
  979. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1202);
  980. XrT68compile_to_c((C)->_target);
  981. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1203);
  982. XrT68compile_to_c(rT191arg1(C));
  983. rT40put_character((T40*)oRBC27cpp,'\51');
  984. }
  985. /*FI*/}
  986. /*FI*/}
  987. int rT191to_integer(T191 *C){
  988. int R=0;
  989. rT191error(rT191start_position(C),(T0 *)ms175);
  990. return R;
  991. }
  992. T0 * rT191dynamic(/*C*/T0 * a1,T0 * a2){
  993. T0 * R=NULL;
  994. T0 * _static=NULL;
  995. T0 * _sta_name=NULL;
  996. T0 * _dyn_name=NULL;
  997. _static=XrT261current_type(a2);
  998. _sta_name=XrT261name(a2);
  999. _dyn_name=rT50name_of((T50*)rT260base_class((T260*)a1),XrT58base_class(_static),_sta_name);
  1000. R=rT260get_feature((T260*)a1,_dyn_name);
  1001. return R;
  1002. }
  1003. T0 * rT191written_in(T191 *C){
  1004. T0 * R=NULL;
  1005. T0 * _sp=NULL;
  1006. _sp=rT191start_position(C);
  1007. /*IF*/if (((int)_sp)) {
  1008. R=((T46*)_sp)->_base_class_name;
  1009. }
  1010. /*FI*/return R;
  1011. }
  1012. void rT191copy(T191 *C,T0 * a1){
  1013. /*IF*//*AF*//*AE*/
  1014. memcpy(C,a1,s[C->id]);
  1015. /*FI*/}
  1016. int rT191is_a(T191 *C,T0 * a1){
  1017. int R=0;
  1018. R=XrT58is_a(XrT58run_type((C)->_result_type),XrT58run_type(XrT68result_type(a1)));
  1019. /*IF*/if (!(R)) {
  1020. /*UT*/(T45*)oRBC27eh;
  1021. rT45add_position(rT191start_position(C));
  1022. rT191error(XrT68start_position(a1),(T0 *)ms1261);
  1023. }
  1024. /*FI*/return R;
  1025. }
  1026. void rT191c2c_exp_ref(/*C*/T0 * a1,T0 * a2,T0 * a3,T0 * a4){
  1027. /*IF*/if (XrT68is_void(a3)) {
  1028. /*IF*/if (XrT58is_pointer(a2)) {
  1029. rT40put_character((T40*)oRBC27cpp,'\41');
  1030. XrT68compile_to_c(a1);
  1031. }
  1032. else {
  1033. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1195);
  1034. XrT68compile_to_c(a1);
  1035. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1196);
  1036. }
  1037. /*FI*/}
  1038. else {
  1039. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1197);
  1040. XrT68compile_to_c(a1);
  1041. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1198);
  1042. XrT68compile_to_c(a3);
  1043. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1199);
  1044. }
  1045. /*FI*/}
  1046. void rT191make_call_1(T191 *C,T0 * a1,T0 * a2,T0 * a3){
  1047. C->_target=a1;
  1048. C->_feature_name=a2;
  1049. C->_arguments=a3;
  1050. }
  1051. void rT191make(T191 *C,T0 * a1,T0 * a2,T0 * a3){
  1052. T0 * _eal=NULL;
  1053. /*IF*/if ((!(a1))||(!(a3))) {
  1054. /*UT*/(T45*)oRBC27eh;
  1055. rT45add_position(a2);
  1056. rT191fatal_error((T0 *)ms305);
  1057. }
  1058. /*FI*/{T70 *n=((T70*)new(70));
  1059. rT70make(n,(T0 *)ms314,a2);
  1060. C->_feature_name=(T0 *)n;}
  1061. {T170 *n=((T170*)new(170));
  1062. /*(IRF3*/((n)->_list)=(ma(81,0,1,a3));
  1063. /*)*/_eal=(T0 *)n;}
  1064. rT191make_call_1(C,a1,(C)->_feature_name,_eal);
  1065. }
  1066. int rT190is_static(T190 *C){
  1067. int R=0;
  1068. /*IF*/if (XrT58is_integer((C)->_result_type)) {
  1069. /*IF*/if ((XrT68is_static((C)->_target))&&(XrT68is_static(rT190arg1(C)))) {
  1070. R=1;
  1071. C->_static_value_mem=(XrT68static_value((C)->_target))-(XrT68static_value(rT190arg1(C)));
  1072. }
  1073. /*FI*/}
  1074. /*FI*/return R;
  1075. }
  1076. int rT190static_value(T190 *C){
  1077. int R=0;
  1078. R=(C)->_static_value_mem;
  1079. return R;
  1080. }
  1081. void rT190fatal_error(/*C*/T0* a1){
  1082. rT45fatal_error((T45*)oRBC27eh,a1);
  1083. }
  1084. void rT190to_runnable_0(T190 *C,T0 * a1){
  1085. T0 * _rc=NULL;
  1086. T0 * _t=NULL;
  1087. C->_current_type=a1;
  1088. _t=XrT68to_runnable((C)->_target,a1);
  1089. /*IF*/if (!(_t)) {
  1090. rT190error(XrT68start_position((C)->_target),(T0 *)ms1119);
  1091. }
  1092. else {
  1093. C->_target=_t;
  1094. _rc=XrT58run_class(XrT68result_type((C)->_target));
  1095. C->_run_feature=rT260get_rf((T260*)_rc,(C)->_target,(C)->_feature_name);
  1096. C->_result_type=XrT261result_type((C)->_run_feature);
  1097. /*IF*/if (!((C)->_result_type)) {
  1098. /*UT*/(T45*)oRBC27eh;
  1099. rT45add_position(XrT261start_position((C)->_run_feature));
  1100. rT190error(((T70*)(C)->_feature_name)->_start_position,(T0 *)ms1131);
  1101. }
  1102. /*FI*/}
  1103. /*FI*/}
  1104. T0 * rT190to_runnable(T190 *C,T0 * a1){
  1105. T0 * R=NULL;
  1106. T0 * _a=NULL;
  1107. /*IF*/if (!((C)->_current_type)) {
  1108. rT190to_runnable_0(C,a1);
  1109. _a=rT170to_runnable((T170*)(C)->_arguments,a1);
  1110. /*IF*/if (!(_a)) {
  1111. rT190error(XrT68start_position(rT190arg1(C)),(T0 *)ms1136);
  1112. }
  1113. else {
  1114. C->_arguments=_a;
  1115. }
  1116. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1117. rT170match_with((T170*)(C)->_arguments,(C)->_run_feature);
  1118. }
  1119. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0))&&(XrT58is_like_argument((C)->_result_type))) {
  1120. C->_result_type=XrT58run_type(XrT68result_type(rT190arg1(C)));
  1121. }
  1122. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1123. R=(T0 *)C;
  1124. }
  1125. /*FI*/}
  1126. else {
  1127. R=rT190clone(C,(T0 *)C);
  1128. /*(IRF3*/(((T190*)R)->_current_type)=(NULL);
  1129. /*)*/R=rT190to_runnable((T190*)R,a1);
  1130. }
  1131. /*FI*/return R;
  1132. }
  1133. void rT190error(/*C*/T0 * a1,T0* a2){
  1134. /*UT*/(T45*)oRBC27eh;
  1135. rT45add_position(a1);
  1136. rT45error((T45*)oRBC27eh,a2);
  1137. }
  1138. T0 * rT190add_comment(T190 *C,T0 * a1){
  1139. T0 * R=NULL;
  1140. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  1141. R=(T0 *)C;
  1142. }
  1143. else {
  1144. {T220 *n=((T220*)new(220));
  1145. rT220make(n,(T0 *)C,a1);
  1146. R=(T0 *)n;}}
  1147. /*FI*/return R;
  1148. }
  1149. T0 * rT190arg1(T190 *C){
  1150. T0 * R=NULL;
  1151. R=rT170first((T170*)(C)->_arguments);
  1152. return R;
  1153. }
  1154. T0 * rT190start_position(T190 *C){
  1155. T0 * R=NULL;
  1156. R=((T70*)(C)->_feature_name)->_start_position;
  1157. return R;
  1158. }
  1159. int rT190use_current(T190 *C){
  1160. int R=0;
  1161. /*IF*/{/*AT*/R=rT170use_current((T170*)(C)->_arguments);
  1162. }
  1163. /*FI*//*IF*/if (R) {
  1164. }
  1165.  else if (XrT68is_current((C)->_target)) {
  1166. R=XrT261use_current((C)->_run_feature);
  1167. }
  1168. else {
  1169. R=XrT68use_current((C)->_target);
  1170. }
  1171. /*FI*/return R;
  1172. }
  1173. T0* rT190clone(T190 *C,T0* a1){
  1174. T0* R=NULL;
  1175. /*IF*/if (((int)a1)) {
  1176. R=(T0 *)new(a1->id);
  1177. AF_1
  1178. XrT28copy(R,a1);
  1179. AF_0
  1180. }
  1181. /*FI*/return R;
  1182. }
  1183. void rT190compile_to_c_old(T190 *C){
  1184. XrT68compile_to_c_old((C)->_target);
  1185. /*IF*/{/*AT*/rT170compile_to_c_old((T170*)(C)->_arguments);
  1186. }
  1187. /*FI*/}
  1188. void rT190compile_to_c(T190 *C){
  1189. T0* _n=NULL;
  1190. T0 * _dyn_rf=NULL;
  1191. T0 * _tt=NULL;
  1192. T0* _r=NULL;
  1193. _tt=XrT58run_type(XrT68result_type((C)->_target));
  1194. _n=XrT67to_string(XrT261name((C)->_run_feature));
  1195. /*IF*/if (rT7is_equal((T7*)(T0 *)ms1109,_n)) {
  1196. rT40put_is_expanded_type((T40*)oRBC27cpp,_tt);
  1197. }
  1198.  else if (((XrT58is_expanded(_tt))||(XrT68is_current((C)->_target)))||(XrT68is_manifest_string((C)->_target))) {
  1199. rT40push_direct((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  1200. XrT261mapping_c((C)->_run_feature);
  1201. rT40pop((T40*)oRBC27cpp);
  1202. }
  1203. else {
  1204. _r=((T260*)XrT58run_class(_tt))->_running;
  1205. /*IF*/if (!(_r)) {
  1206. rT40push_void((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  1207. XrT261mapping_c((C)->_run_feature);
  1208. rT40pop((T40*)oRBC27cpp);
  1209. }
  1210.  else if ((rT263count((T263*)_r))==(1)) {
  1211. _dyn_rf=rT190dynamic(rT263first((T263*)_r),(C)->_run_feature);
  1212. rT40push_check((T40*)oRBC27cpp,_dyn_rf,(C)->_target,(C)->_arguments);
  1213. XrT261mapping_c(_dyn_rf);
  1214. rT40pop((T40*)oRBC27cpp);
  1215. }
  1216. else {
  1217. rT40use_switch((T40*)oRBC27cpp,(C)->_run_feature,_r,(C)->_target,(C)->_arguments);
  1218. }
  1219. /*FI*/}
  1220. /*FI*/}
  1221. int rT190to_integer(T190 *C){
  1222. int R=0;
  1223. rT190error(rT190start_position(C),(T0 *)ms175);
  1224. return R;
  1225. }
  1226. T0 * rT190dynamic(/*C*/T0 * a1,T0 * a2){
  1227. T0 * R=NULL;
  1228. T0 * _static=NULL;
  1229. T0 * _sta_name=NULL;
  1230. T0 * _dyn_name=NULL;
  1231. _static=XrT261current_type(a2);
  1232. _sta_name=XrT261name(a2);
  1233. _dyn_name=rT50name_of((T50*)rT260base_class((T260*)a1),XrT58base_class(_static),_sta_name);
  1234. R=rT260get_feature((T260*)a1,_dyn_name);
  1235. return R;
  1236. }
  1237. T0 * rT190written_in(T190 *C){
  1238. T0 * R=NULL;
  1239. T0 * _sp=NULL;
  1240. _sp=rT190start_position(C);
  1241. /*IF*/if (((int)_sp)) {
  1242. R=((T46*)_sp)->_base_class_name;
  1243. }
  1244. /*FI*/return R;
  1245. }
  1246. void rT190copy(T190 *C,T0 * a1){
  1247. /*IF*//*AF*//*AE*/
  1248. memcpy(C,a1,s[C->id]);
  1249. /*FI*/}
  1250. int rT190is_a(T190 *C,T0 * a1){
  1251. int R=0;
  1252. R=XrT58is_a(XrT58run_type((C)->_result_type),XrT58run_type(XrT68result_type(a1)));
  1253. /*IF*/if (!(R)) {
  1254. /*UT*/(T45*)oRBC27eh;
  1255. rT45add_position(rT190start_position(C));
  1256. rT190error(XrT68start_position(a1),(T0 *)ms1261);
  1257. }
  1258. /*FI*/return R;
  1259. }
  1260. void rT190make_call_1(T190 *C,T0 * a1,T0 * a2,T0 * a3){
  1261. C->_target=a1;
  1262. C->_feature_name=a2;
  1263. C->_arguments=a3;
  1264. }
  1265. void rT190make(T190 *C,T0 * a1,T0 * a2,T0 * a3){
  1266. T0 * _eal=NULL;
  1267. /*IF*/if ((!(a1))||(!(a3))) {
  1268. /*UT*/(T45*)oRBC27eh;
  1269. rT45add_position(a2);
  1270. rT190fatal_error((T0 *)ms305);
  1271. }
  1272. /*FI*/{T70 *n=((T70*)new(70));
  1273. rT70make(n,/*(IRF4*/(T0 *)ms87/*)*/,a2);
  1274. C->_feature_name=(T0 *)n;}
  1275. {T170 *n=((T170*)new(170));
  1276. /*(IRF3*/((n)->_list)=(ma(81,0,1,a3));
  1277. /*)*/_eal=(T0 *)n;}
  1278. rT190make_call_1(C,a1,(C)->_feature_name,_eal);
  1279. }
  1280. int rT189is_static(T189 *C){
  1281. int R=0;
  1282. /*IF*/if (XrT58is_integer((C)->_result_type)) {
  1283. /*IF*/if ((XrT68is_static((C)->_target))&&(XrT68is_static(rT189arg1(C)))) {
  1284. R=1;
  1285. C->_static_value_mem=(XrT68static_value((C)->_target))+(XrT68static_value(rT189arg1(C)));
  1286. }
  1287. /*FI*/}
  1288. /*FI*/return R;
  1289. }
  1290. int rT189static_value(T189 *C){
  1291. int R=0;
  1292. R=(C)->_static_value_mem;
  1293. return R;
  1294. }
  1295. void rT189fatal_error(/*C*/T0* a1){
  1296. rT45fatal_error((T45*)oRBC27eh,a1);
  1297. }
  1298. void rT189to_runnable_0(T189 *C,T0 * a1){
  1299. T0 * _rc=NULL;
  1300. T0 * _t=NULL;
  1301. C->_current_type=a1;
  1302. _t=XrT68to_runnable((C)->_target,a1);
  1303. /*IF*/if (!(_t)) {
  1304. rT189error(XrT68start_position((C)->_target),(T0 *)ms1119);
  1305. }
  1306. else {
  1307. C->_target=_t;
  1308. _rc=XrT58run_class(XrT68result_type((C)->_target));
  1309. C->_run_feature=rT260get_rf((T260*)_rc,(C)->_target,(C)->_feature_name);
  1310. C->_result_type=XrT261result_type((C)->_run_feature);
  1311. /*IF*/if (!((C)->_result_type)) {
  1312. /*UT*/(T45*)oRBC27eh;
  1313. rT45add_position(XrT261start_position((C)->_run_feature));
  1314. rT189error(((T70*)(C)->_feature_name)->_start_position,(T0 *)ms1131);
  1315. }
  1316. /*FI*/}
  1317. /*FI*/}
  1318. T0 * rT189to_runnable(T189 *C,T0 * a1){
  1319. T0 * R=NULL;
  1320. T0 * _a=NULL;
  1321. /*IF*/if (!((C)->_current_type)) {
  1322. rT189to_runnable_0(C,a1);
  1323. _a=rT170to_runnable((T170*)(C)->_arguments,a1);
  1324. /*IF*/if (!(_a)) {
  1325. rT189error(XrT68start_position(rT189arg1(C)),(T0 *)ms1136);
  1326. }
  1327. else {
  1328. C->_arguments=_a;
  1329. }
  1330. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1331. rT170match_with((T170*)(C)->_arguments,(C)->_run_feature);
  1332. }
  1333. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0))&&(XrT58is_like_argument((C)->_result_type))) {
  1334. C->_result_type=XrT58run_type(XrT68result_type(rT189arg1(C)));
  1335. }
  1336. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1337. R=(T0 *)C;
  1338. }
  1339. /*FI*/}
  1340. else {
  1341. R=rT189clone(C,(T0 *)C);
  1342. /*(IRF3*/(((T189*)R)->_current_type)=(NULL);
  1343. /*)*/R=rT189to_runnable((T189*)R,a1);
  1344. }
  1345. /*FI*/return R;
  1346. }
  1347. void rT189error(/*C*/T0 * a1,T0* a2){
  1348. /*UT*/(T45*)oRBC27eh;
  1349. rT45add_position(a1);
  1350. rT45error((T45*)oRBC27eh,a2);
  1351. }
  1352. T0 * rT189add_comment(T189 *C,T0 * a1){
  1353. T0 * R=NULL;
  1354. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  1355. R=(T0 *)C;
  1356. }
  1357. else {
  1358. {T220 *n=((T220*)new(220));
  1359. rT220make(n,(T0 *)C,a1);
  1360. R=(T0 *)n;}}
  1361. /*FI*/return R;
  1362. }
  1363. T0 * rT189arg1(T189 *C){
  1364. T0 * R=NULL;
  1365. R=rT170first((T170*)(C)->_arguments);
  1366. return R;
  1367. }
  1368. T0 * rT189start_position(T189 *C){
  1369. T0 * R=NULL;
  1370. R=((T70*)(C)->_feature_name)->_start_position;
  1371. return R;
  1372. }
  1373. int rT189use_current(T189 *C){
  1374. int R=0;
  1375. /*IF*/{/*AT*/R=rT170use_current((T170*)(C)->_arguments);
  1376. }
  1377. /*FI*//*IF*/if (R) {
  1378. }
  1379.  else if (XrT68is_current((C)->_target)) {
  1380. R=XrT261use_current((C)->_run_feature);
  1381. }
  1382. else {
  1383. R=XrT68use_current((C)->_target);
  1384. }
  1385. /*FI*/return R;
  1386. }
  1387. T0* rT189clone(T189 *C,T0* a1){
  1388. T0* R=NULL;
  1389. /*IF*/if (((int)a1)) {
  1390. R=(T0 *)new(a1->id);
  1391. AF_1
  1392. XrT28copy(R,a1);
  1393. AF_0
  1394. }
  1395. /*FI*/return R;
  1396. }
  1397. void rT189compile_to_c_old(T189 *C){
  1398. XrT68compile_to_c_old((C)->_target);
  1399. /*IF*/{/*AT*/rT170compile_to_c_old((T170*)(C)->_arguments);
  1400. }
  1401. /*FI*/}
  1402. void rT189compile_to_c(T189 *C){
  1403. T0* _n=NULL;
  1404. T0 * _dyn_rf=NULL;
  1405. T0 * _tt=NULL;
  1406. T0* _r=NULL;
  1407. _tt=XrT58run_type(XrT68result_type((C)->_target));
  1408. _n=XrT67to_string(XrT261name((C)->_run_feature));
  1409. /*IF*/if (rT7is_equal((T7*)(T0 *)ms1109,_n)) {
  1410. rT40put_is_expanded_type((T40*)oRBC27cpp,_tt);
  1411. }
  1412.  else if (((XrT58is_expanded(_tt))||(XrT68is_current((C)->_target)))||(XrT68is_manifest_string((C)->_target))) {
  1413. rT40push_direct((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  1414. XrT261mapping_c((C)->_run_feature);
  1415. rT40pop((T40*)oRBC27cpp);
  1416. }
  1417. else {
  1418. _r=((T260*)XrT58run_class(_tt))->_running;
  1419. /*IF*/if (!(_r)) {
  1420. rT40push_void((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  1421. XrT261mapping_c((C)->_run_feature);
  1422. rT40pop((T40*)oRBC27cpp);
  1423. }
  1424.  else if ((rT263count((T263*)_r))==(1)) {
  1425. _dyn_rf=rT189dynamic(rT263first((T263*)_r),(C)->_run_feature);
  1426. rT40push_check((T40*)oRBC27cpp,_dyn_rf,(C)->_target,(C)->_arguments);
  1427. XrT261mapping_c(_dyn_rf);
  1428. rT40pop((T40*)oRBC27cpp);
  1429. }
  1430. else {
  1431. rT40use_switch((T40*)oRBC27cpp,(C)->_run_feature,_r,(C)->_target,(C)->_arguments);
  1432. }
  1433. /*FI*/}
  1434. /*FI*/}
  1435. int rT189to_integer(T189 *C){
  1436. int R=0;
  1437. rT189error(rT189start_position(C),(T0 *)ms175);
  1438. return R;
  1439. }
  1440. T0 * rT189dynamic(/*C*/T0 * a1,T0 * a2){
  1441. T0 * R=NULL;
  1442. T0 * _static=NULL;
  1443. T0 * _sta_name=NULL;
  1444. T0 * _dyn_name=NULL;
  1445. _static=XrT261current_type(a2);
  1446. _sta_name=XrT261name(a2);
  1447. _dyn_name=rT50name_of((T50*)rT260base_class((T260*)a1),XrT58base_class(_static),_sta_name);
  1448. R=rT260get_feature((T260*)a1,_dyn_name);
  1449. return R;
  1450. }
  1451. T0 * rT189written_in(T189 *C){
  1452. T0 * R=NULL;
  1453. T0 * _sp=NULL;
  1454. _sp=rT189start_position(C);
  1455. /*IF*/if (((int)_sp)) {
  1456. R=((T46*)_sp)->_base_class_name;
  1457. }
  1458. /*FI*/return R;
  1459. }
  1460. void rT189copy(T189 *C,T0 * a1){
  1461. /*IF*//*AF*//*AE*/
  1462. memcpy(C,a1,s[C->id]);
  1463. /*FI*/}
  1464. int rT189is_a(T189 *C,T0 * a1){
  1465. int R=0;
  1466. R=XrT58is_a(XrT58run_type((C)->_result_type),XrT58run_type(XrT68result_type(a1)));
  1467. /*IF*/if (!(R)) {
  1468. /*UT*/(T45*)oRBC27eh;
  1469. rT45add_position(rT189start_position(C));
  1470. rT189error(XrT68start_position(a1),(T0 *)ms1261);
  1471. }
  1472. /*FI*/return R;
  1473. }
  1474. void rT189make_call_1(T189 *C,T0 * a1,T0 * a2,T0 * a3){
  1475. C->_target=a1;
  1476. C->_feature_name=a2;
  1477. C->_arguments=a3;
  1478. }
  1479. void rT189make(T189 *C,T0 * a1,T0 * a2,T0 * a3){
  1480. T0 * _eal=NULL;
  1481. /*IF*/if ((!(a1))||(!(a3))) {
  1482. /*UT*/(T45*)oRBC27eh;
  1483. rT45add_position(a2);
  1484. rT189fatal_error((T0 *)ms305);
  1485. }
  1486. /*FI*/{T70 *n=((T70*)new(70));
  1487. rT70make(n,/*(IRF4*/(T0 *)ms86/*)*/,a2);
  1488. C->_feature_name=(T0 *)n;}
  1489. {T170 *n=((T170*)new(170));
  1490. /*(IRF3*/((n)->_list)=(ma(81,0,1,a3));
  1491. /*)*/_eal=(T0 *)n;}
  1492. rT189make_call_1(C,a1,(C)->_feature_name,_eal);
  1493. }
  1494. int rT188static_value(T188 *C){
  1495. int R=0;
  1496. R=(C)->_static_value_mem;
  1497. return R;
  1498. }
  1499. void rT188fatal_error(/*C*/T0* a1){
  1500. rT45fatal_error((T45*)oRBC27eh,a1);
  1501. }
  1502. void rT188to_runnable_0(T188 *C,T0 * a1){
  1503. T0 * _rc=NULL;
  1504. T0 * _t=NULL;
  1505. C->_current_type=a1;
  1506. _t=XrT68to_runnable((C)->_target,a1);
  1507. /*IF*/if (!(_t)) {
  1508. rT188error(XrT68start_position((C)->_target),(T0 *)ms1119);
  1509. }
  1510. else {
  1511. C->_target=_t;
  1512. _rc=XrT58run_class(XrT68result_type((C)->_target));
  1513. C->_run_feature=rT260get_rf((T260*)_rc,(C)->_target,(C)->_feature_name);
  1514. C->_result_type=XrT261result_type((C)->_run_feature);
  1515. /*IF*/if (!((C)->_result_type)) {
  1516. /*UT*/(T45*)oRBC27eh;
  1517. rT45add_position(XrT261start_position((C)->_run_feature));
  1518. rT188error(((T70*)(C)->_feature_name)->_start_position,(T0 *)ms1131);
  1519. }
  1520. /*FI*/}
  1521. /*FI*/}
  1522. T0 * rT188to_runnable(T188 *C,T0 * a1){
  1523. T0 * R=NULL;
  1524. T0 * _a=NULL;
  1525. /*IF*/if (!((C)->_current_type)) {
  1526. rT188to_runnable_0(C,a1);
  1527. _a=rT170to_runnable((T170*)(C)->_arguments,a1);
  1528. /*IF*/if (!(_a)) {
  1529. rT188error(XrT68start_position(rT188arg1(C)),(T0 *)ms1136);
  1530. }
  1531. else {
  1532. C->_arguments=_a;
  1533. }
  1534. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1535. rT170match_with((T170*)(C)->_arguments,(C)->_run_feature);
  1536. }
  1537. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0))&&(XrT58is_like_argument((C)->_result_type))) {
  1538. C->_result_type=XrT58run_type(XrT68result_type(rT188arg1(C)));
  1539. }
  1540. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1541. R=(T0 *)C;
  1542. }
  1543. /*FI*/}
  1544. else {
  1545. R=rT188clone(C,(T0 *)C);
  1546. /*(IRF3*/(((T188*)R)->_current_type)=(NULL);
  1547. /*)*/R=rT188to_runnable((T188*)R,a1);
  1548. }
  1549. /*FI*/return R;
  1550. }
  1551. void rT188error(/*C*/T0 * a1,T0* a2){
  1552. /*UT*/(T45*)oRBC27eh;
  1553. rT45add_position(a1);
  1554. rT45error((T45*)oRBC27eh,a2);
  1555. }
  1556. T0 * rT188add_comment(T188 *C,T0 * a1){
  1557. T0 * R=NULL;
  1558. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  1559. R=(T0 *)C;
  1560. }
  1561. else {
  1562. {T220 *n=((T220*)new(220));
  1563. rT220make(n,(T0 *)C,a1);
  1564. R=(T0 *)n;}}
  1565. /*FI*/return R;
  1566. }
  1567. T0 * rT188arg1(T188 *C){
  1568. T0 * R=NULL;
  1569. R=rT170first((T170*)(C)->_arguments);
  1570. return R;
  1571. }
  1572. T0 * rT188start_position(T188 *C){
  1573. T0 * R=NULL;
  1574. R=((T70*)(C)->_feature_name)->_start_position;
  1575. return R;
  1576. }
  1577. int rT188use_current(T188 *C){
  1578. int R=0;
  1579. /*IF*/{/*AT*/R=rT170use_current((T170*)(C)->_arguments);
  1580. }
  1581. /*FI*//*IF*/if (R) {
  1582. }
  1583.  else if (XrT68is_current((C)->_target)) {
  1584. R=XrT261use_current((C)->_run_feature);
  1585. }
  1586. else {
  1587. R=XrT68use_current((C)->_target);
  1588. }
  1589. /*FI*/return R;
  1590. }
  1591. T0* rT188clone(T188 *C,T0* a1){
  1592. T0* R=NULL;
  1593. /*IF*/if (((int)a1)) {
  1594. R=(T0 *)new(a1->id);
  1595. AF_1
  1596. XrT28copy(R,a1);
  1597. AF_0
  1598. }
  1599. /*FI*/return R;
  1600. }
  1601. void rT188compile_to_c_old(T188 *C){
  1602. XrT68compile_to_c_old((C)->_target);
  1603. /*IF*/{/*AT*/rT170compile_to_c_old((T170*)(C)->_arguments);
  1604. }
  1605. /*FI*/}
  1606. void rT188compile_to_c(T188 *C){
  1607. T0* _n=NULL;
  1608. T0 * _dyn_rf=NULL;
  1609. T0 * _tt=NULL;
  1610. T0* _r=NULL;
  1611. _tt=XrT58run_type(XrT68result_type((C)->_target));
  1612. _n=XrT67to_string(XrT261name((C)->_run_feature));
  1613. /*IF*/if (rT7is_equal((T7*)(T0 *)ms1109,_n)) {
  1614. rT40put_is_expanded_type((T40*)oRBC27cpp,_tt);
  1615. }
  1616.  else if (((XrT58is_expanded(_tt))||(XrT68is_current((C)->_target)))||(XrT68is_manifest_string((C)->_target))) {
  1617. rT40push_direct((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  1618. XrT261mapping_c((C)->_run_feature);
  1619. rT40pop((T40*)oRBC27cpp);
  1620. }
  1621. else {
  1622. _r=((T260*)XrT58run_class(_tt))->_running;
  1623. /*IF*/if (!(_r)) {
  1624. rT40push_void((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  1625. XrT261mapping_c((C)->_run_feature);
  1626. rT40pop((T40*)oRBC27cpp);
  1627. }
  1628.  else if ((rT263count((T263*)_r))==(1)) {
  1629. _dyn_rf=rT188dynamic(rT263first((T263*)_r),(C)->_run_feature);
  1630. rT40push_check((T40*)oRBC27cpp,_dyn_rf,(C)->_target,(C)->_arguments);
  1631. XrT261mapping_c(_dyn_rf);
  1632. rT40pop((T40*)oRBC27cpp);
  1633. }
  1634. else {
  1635. rT40use_switch((T40*)oRBC27cpp,(C)->_run_feature,_r,(C)->_target,(C)->_arguments);
  1636. }
  1637. /*FI*/}
  1638. /*FI*/}
  1639. int rT188to_integer(T188 *C){
  1640. int R=0;
  1641. rT188error(rT188start_position(C),(T0 *)ms175);
  1642. return R;
  1643. }
  1644. T0 * rT188dynamic(/*C*/T0 * a1,T0 * a2){
  1645. T0 * R=NULL;
  1646. T0 * _static=NULL;
  1647. T0 * _sta_name=NULL;
  1648. T0 * _dyn_name=NULL;
  1649. _static=XrT261current_type(a2);
  1650. _sta_name=XrT261name(a2);
  1651. _dyn_name=rT50name_of((T50*)rT260base_class((T260*)a1),XrT58base_class(_static),_sta_name);
  1652. R=rT260get_feature((T260*)a1,_dyn_name);
  1653. return R;
  1654. }
  1655. T0 * rT188written_in(T188 *C){
  1656. T0 * R=NULL;
  1657. T0 * _sp=NULL;
  1658. _sp=rT188start_position(C);
  1659. /*IF*/if (((int)_sp)) {
  1660. R=((T46*)_sp)->_base_class_name;
  1661. }
  1662. /*FI*/return R;
  1663. }
  1664. void rT188copy(T188 *C,T0 * a1){
  1665. /*IF*//*AF*//*AE*/
  1666. memcpy(C,a1,s[C->id]);
  1667. /*FI*/}
  1668. int rT188is_a(T188 *C,T0 * a1){
  1669. int R=0;
  1670. R=XrT58is_a(XrT58run_type((C)->_result_type),XrT58run_type(XrT68result_type(a1)));
  1671. /*IF*/if (!(R)) {
  1672. /*UT*/(T45*)oRBC27eh;
  1673. rT45add_position(rT188start_position(C));
  1674. rT188error(XrT68start_position(a1),(T0 *)ms1261);
  1675. }
  1676. /*FI*/return R;
  1677. }
  1678. void rT188make_call_1(T188 *C,T0 * a1,T0 * a2,T0 * a3){
  1679. C->_target=a1;
  1680. C->_feature_name=a2;
  1681. C->_arguments=a3;
  1682. }
  1683. void rT188make(T188 *C,T0 * a1,T0 * a2,T0 * a3){
  1684. T0 * _eal=NULL;
  1685. /*IF*/if ((!(a1))||(!(a3))) {
  1686. /*UT*/(T45*)oRBC27eh;
  1687. rT45add_position(a2);
  1688. rT188fatal_error((T0 *)ms305);
  1689. }
  1690. /*FI*/{T70 *n=((T70*)new(70));
  1691. rT70make(n,/*(IRF4*/(T0 *)ms97/*)*/,a2);
  1692. C->_feature_name=(T0 *)n;}
  1693. {T170 *n=((T170*)new(170));
  1694. /*(IRF3*/((n)->_list)=(ma(81,0,1,a3));
  1695. /*)*/_eal=(T0 *)n;}
  1696. rT188make_call_1(C,a1,(C)->_feature_name,_eal);
  1697. }
  1698. int rT187is_static(T187 *C){
  1699. int R=0;
  1700. /*IF*/if (XrT58is_integer((C)->_result_type)) {
  1701. /*IF*/if ((XrT68is_static((C)->_target))&&(XrT68is_static(rT187arg1(C)))) {
  1702. R=1;
  1703. C->_static_value_mem=(XrT68static_value((C)->_target))%(XrT68static_value(rT187arg1(C)));
  1704. }
  1705. /*FI*/}
  1706. /*FI*/return R;
  1707. }
  1708. int rT187static_value(T187 *C){
  1709. int R=0;
  1710. R=(C)->_static_value_mem;
  1711. return R;
  1712. }
  1713. void rT187fatal_error(/*C*/T0* a1){
  1714. rT45fatal_error((T45*)oRBC27eh,a1);
  1715. }
  1716. void rT187to_runnable_0(T187 *C,T0 * a1){
  1717. T0 * _rc=NULL;
  1718. T0 * _t=NULL;
  1719. C->_current_type=a1;
  1720. _t=XrT68to_runnable((C)->_target,a1);
  1721. /*IF*/if (!(_t)) {
  1722. rT187error(XrT68start_position((C)->_target),(T0 *)ms1119);
  1723. }
  1724. else {
  1725. C->_target=_t;
  1726. _rc=XrT58run_class(XrT68result_type((C)->_target));
  1727. C->_run_feature=rT260get_rf((T260*)_rc,(C)->_target,(C)->_feature_name);
  1728. C->_result_type=XrT261result_type((C)->_run_feature);
  1729. /*IF*/if (!((C)->_result_type)) {
  1730. /*UT*/(T45*)oRBC27eh;
  1731. rT45add_position(XrT261start_position((C)->_run_feature));
  1732. rT187error(((T70*)(C)->_feature_name)->_start_position,(T0 *)ms1131);
  1733. }
  1734. /*FI*/}
  1735. /*FI*/}
  1736. T0 * rT187to_runnable(T187 *C,T0 * a1){
  1737. T0 * R=NULL;
  1738. T0 * _a=NULL;
  1739. /*IF*/if (!((C)->_current_type)) {
  1740. rT187to_runnable_0(C,a1);
  1741. _a=rT170to_runnable((T170*)(C)->_arguments,a1);
  1742. /*IF*/if (!(_a)) {
  1743. rT187error(XrT68start_position(rT187arg1(C)),(T0 *)ms1136);
  1744. }
  1745. else {
  1746. C->_arguments=_a;
  1747. }
  1748. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1749. rT170match_with((T170*)(C)->_arguments,(C)->_run_feature);
  1750. }
  1751. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0))&&(XrT58is_like_argument((C)->_result_type))) {
  1752. C->_result_type=XrT58run_type(XrT68result_type(rT187arg1(C)));
  1753. }
  1754. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1755. R=(T0 *)C;
  1756. }
  1757. /*FI*/}
  1758. else {
  1759. R=rT187clone(C,(T0 *)C);
  1760. /*(IRF3*/(((T187*)R)->_current_type)=(NULL);
  1761. /*)*/R=rT187to_runnable((T187*)R,a1);
  1762. }
  1763. /*FI*/return R;
  1764. }
  1765. void rT187error(/*C*/T0 * a1,T0* a2){
  1766. /*UT*/(T45*)oRBC27eh;
  1767. rT45add_position(a1);
  1768. rT45error((T45*)oRBC27eh,a2);
  1769. }
  1770. T0 * rT187add_comment(T187 *C,T0 * a1){
  1771. T0 * R=NULL;
  1772. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  1773. R=(T0 *)C;
  1774. }
  1775. else {
  1776. {T220 *n=((T220*)new(220));
  1777. rT220make(n,(T0 *)C,a1);
  1778. R=(T0 *)n;}}
  1779. /*FI*/return R;
  1780. }
  1781. T0 * rT187arg1(T187 *C){
  1782. T0 * R=NULL;
  1783. R=rT170first((T170*)(C)->_arguments);
  1784. return R;
  1785. }
  1786. T0 * rT187start_position(T187 *C){
  1787. T0 * R=NULL;
  1788. R=((T70*)(C)->_feature_name)->_start_position;
  1789. return R;
  1790. }
  1791.